package com.sikaryofficial.backend.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.sikaryofficial.backend.domain.dto.req.BrandTasteEvaluateListReq;
import com.sikaryofficial.backend.domain.dto.req.BrandTasteEvaluateOwnerReq;
import com.sikaryofficial.backend.domain.dto.req.BrandTasteEvaluateReq;
import com.sikaryofficial.backend.domain.dto.req.content.ContentEvaluatePageReq;
import com.sikaryofficial.backend.domain.dto.resp.BrandTasteEvaluateDTO;
import com.sikaryofficial.backend.domain.entity.BrandTasteEvaluate;
import com.sikaryofficial.backend.domain.vo.CountryAreaVO;

/**
 * 品牌口味评价Service接口
 *
 * @author qinjinyuan
 * @date 2023-10-27
 */
public interface IBrandTasteEvaluateService extends IService<BrandTasteEvaluate> {
    /**
     * 评价分页列表数据
     *
     * @param customerPage
     * @param req
     * @return
     */
    IPage<BrandTasteEvaluateDTO> evaluateList(Page<BrandTasteEvaluateDTO> customerPage, BrandTasteEvaluateListReq req);

    /**
     * 个人中心-我的评价列表数据
     *
     * @param customerPage
     * @param req
     * @return
     */
    IPage<BrandTasteEvaluateDTO> ownerList(Page<BrandTasteEvaluateDTO> customerPage, BrandTasteEvaluateOwnerReq req);

    /**
     * 后台-内容管理-评价列表数据
     *
     * @param customerPage
     * @param req
     * @return
     */
    IPage<BrandTasteEvaluateDTO> backendContentList(Page<BrandTasteEvaluateDTO> customerPage, ContentEvaluatePageReq req);

    /**
     * 新增评价数据
     *
     * @param req
     * @return
     */
    boolean saveEvaluate(BrandTasteEvaluateReq req);

    /**
     * 新增评价数据
     * @param req
     * @param ip   请求IP地址
     * @param countryAreaVO  区域数据
     * @return
     */
    boolean saveEvaluate(BrandTasteEvaluateReq req, String ip, CountryAreaVO countryAreaVO);

    /**
     * 更新评价数据
     *
     * @param req
     * @return
     */
    boolean updateEvaluate(BrandTasteEvaluateReq req);

    /**
     * 删除评论
     *
     * @param evaluateIds
     * @return
     */
    boolean removeEvaluate(Long[] evaluateIds);

    /**
     * 根据ID获取评价详情
     *
     * @param evaluateId
     * @return
     */
    BrandTasteEvaluateDTO detail(Long evaluateId);

}
